# -*- coding: utf-8 -*- 
# 作者:飞虎
# 开发时间:2022/5/4 20:54
# 0. 导入需要的包和模块
from PyQt5.Qt import *
import sys

# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 控件的操作
# 2.1 创建控件
window = QWidget()
# 2.2 设置控件
window.setWindowTitle('QToolButton使用')
window.resize(500, 500)

tb = QToolButton(window)
tb.setText('工具')
tb.setIcon(QIcon('xxx.png'))
# tb.setIconSize(QSize(60,60))
# tb.setToolTip('这是一个新建按钮')

# tb.setToolButtonStyle(Qt.ToolButtonIconOnly)
# tb.setToolButtonStyle(Qt.ToolButtonTextOnly)
tb.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
# tb.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
# tb.setToolButtonStyle(Qt.ToolButtonFollowStyle)

# tb.setArrowType(Qt.NoArrow)
# tb.setArrowType(Qt.UpArrow)
# tb.setArrowType(Qt.DownArrow)
# tb.setArrowType(Qt.LeftArrow)
tb.setArrowType(Qt.RightArrow)
tb.setAutoRaise(True)

menu = QMenu(tb)
menu.setTitle('菜单')

sub_menu = QMenu(menu)
sub_menu.setTitle('子菜单')
sub_menu.setIcon(QIcon('xxx.png'))

action1 = QAction(QIcon('xxx.png'), '行为1', menu)
action1.setData([1, 2, 3])
action2 = QAction('行为2', menu)
action2.setData({'name': 'Sz'})
# action.triggered.connect(lambda: print('点击了行为菜单选项'))

menu.addMenu(sub_menu)

menu.addSeparator()
menu.addAction(action1)
menu.addAction(action2)

tb.clicked.connect(lambda: print('工具按钮被点击了'))

tb.setMenu(menu)
# tb.setPopupMode(QToolButton.MenuButtonPopup)
tb.setPopupMode(QToolButton.InstantPopup)


def do_action(action):
	print('点击了行为', action.data())


tb.triggered.connect(do_action)

btn = QPushButton(window)
btn.setText('一般按钮')
btn.move(100, 100)
btn.setFlat(True)

# 2.3 展示控件
window.show()
# 3. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())
